Speech recognition and speech processing systems are prevalent in many consumer electronic devices. Many of these electronic devices now utilize speech command processing techniques to invoke and perform particular operations. For example, a user device, such as a smart phone, can process speech commands to perform specified operations that include searching the web, setting an alarm, calling a particular person, and so on.
Furthermore, with the advent of tablet computers and smart phones, native applications that facilitate the performance of the various functions that operation on content retrieved over the Internet, or that operate on content local to a user device, are now very common. Many users thus have multiple applications on their mobile devices. Such applications include games, mapping applications, note taking applications, finance applications, and so on.
However, for a user to make use of the various functions supported by a native application, the native application must either be instantiated and be able to receive user input, or, alternatively, must specify to a third party application that the native application is capable of processing an “intent” for the third party application. As used in this specification, an “intent” specifies a messaging object that a first application can generate to request an action from another application. More precisely, an intent is an abstract description of an operation to be performed (an “action”), and can also specify parameter values (the data to be operated on) that are passed to a native application for processing by the specified operation. The intent provides a facility for performing runtime binding between the code in different applications.
To support the message objects from an intent recognized by a third party application, the native application developer must list the intents supported by the native application. For example, many native applications include an application manifest that includes, among other things, the data structure of the particular intents supported by the native application. Upon installation, the intents supported by the native application are discovered by the operating system and associated with the native application. Thereafter, a third party application, such as s search application, personal assistant, etc., may parse inputs to determine whether an input specifies an action and, if required, parameter values for that action. If an action is determined to be specified, the third party application may determine from the discovered intents which native application supports the action, and send a message object to instantiate the application so that the native application may perform the action and process the parameters values.
For example, a user may utter [directions to Pike Place Market Seattle]. An electronic personal assistant, making use of parsing technology, may determine the utterance specifies a mapping action to Pike Place Market in Seattle, Wash. Accordingly, if a map application is installed on the user device, the personal assistant generates a message object, e.g., [Directions: Pike Place Market, Seattle, Wash.]. The message object is directed to the map application, which causes the map application to instantiate and perform an operation to route from a current location to Pike Place Market in Seattle, Wash.
Many developers of native applications, however, are not aware of intents that can be supported by a particular operating system, or specify incorrect data structures that define the intents. Thus, many developers do not successfully integrate their native applications with services offered by such third party applications.